﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using MySql.Data;//para el datatable
using MySql.Data.MySqlClient;
using Mapeo;
using NHibernate;
using BE;
using NHibernate.Criterion;

namespace DAL
{
    public class ActaPromocional_DAL : Controlador
    {    
        public DataTable ActaPromocional_xCodigo_xNombre_xEspec(string ciclo, string especialidad, string periodo)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    //SqlCmd.CommandText = "sp_Cursor_Notas_Casos_Especiales";
                    SqlCmd.CommandText = "sp_Cursor_Notas_Casos_Especiales2";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@inCiclo", ciclo);
                    SqlCmd.Parameters.AddWithValue("@inEspecialidad", especialidad);
                    SqlCmd.Parameters.AddWithValue("@inPeriodo", periodo); 

                    SqlCmd.ExecuteNonQuery();

                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }

        public Especialidad obtenerEspecialidad(String id) {
            try
            {
                using (ISession Sesion = m_SessionFactory.OpenSession())
                {
                    Especialidad especialidad = (Especialidad)Sesion.CreateCriteria("Especialidad").Add(Restrictions.Eq("ID", id)).UniqueResult();
                    return especialidad;
                }
            }
            catch (Exception)
            {

                throw;
            }

        }

        public DataTable ActaPromocional_xCodigo_xNombre_xEspec_paraGrupos(string ciclo, string especialidad, string periodo, string grupo)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    //SqlCmd.CommandText = "sp_Cursor_Notas_Casos_Especiales";
                    SqlCmd.CommandText = "sp_Cursor_Notas_Casos_Especiales3";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@inCiclo", ciclo);
                    SqlCmd.Parameters.AddWithValue("@inEspecialidad", especialidad);
                    SqlCmd.Parameters.AddWithValue("@inPeriodo", periodo);
                    SqlCmd.Parameters.AddWithValue("@inGrupo", grupo);

                    SqlCmd.ExecuteNonQuery();

                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }
    }
}
